Smart Constructors
Haskell
のオブジェクト生成パターン
https://wiki.haskell.org/Smart_constructors
/mrsekut-p/smart constructor